package com.mercury.ec.module.air.dal.dataobject.order;

import com.baomidou.mybatisplus.annotation.KeySequence;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
import com.mercury.ec.framework.mybatis.core.dataobject.BaseDO;
import lombok.*;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;

/**
 * 机票订单 DO
 *
 * @author hesx
 */
@TableName("air_order")
@KeySequence("air_order_seq") // 用于 Oracle、PostgreSQL、Kingbase、DB2、H2 数据库的主键自增。如果是 MySQL 等数据库，可不写。
@Data
@EqualsAndHashCode(callSuper = true)
@ToString(callSuper = true)
@Builder
@NoArgsConstructor
@AllArgsConstructor
public class AirOrderDO extends BaseDO {

    /**
     * id
     */
    @TableId
    private Long id;
    /**
     * 订单号
     */
    private String no;
    /**
     * 订单来源 字典（air_order_source_type 1-手工订单/2-白屏/3-ETERM/4-需求单）
     * <p>
     * 枚举 {@link TODO air_order_source_type 对应的类}
     */
    private Integer sourceType;
    /**
     * 来源单号
     */
    private String sourceNo;
    /**
     * 原订单id
     */
    private Long originOrderId;
    /**
     * 原订单号
     */
    private String originOrderNo;
    /**
     * 系统客户端 字典（system_client_type 1-中台/2-分销/3-差旅）
     * <p>
     * 枚举 {@link TODO system_client_type 对应的类}
     */
    private Integer clientType;
    /**
     * 订单类型 字典（air_order_type 1-销售单/2-改签单/3-退票单/4-调账单）
     * <p>
     * 枚举 {@link TODO air_order_type 对应的类}
     */
    private Integer type;
    /**
     * 改签状态 字典（air_order_change_status 0-未改签，1-部分改签，2-已改签）
     * <p>
     * 枚举 {@link TODO air_order_change_status 对应的类}
     */
    private Integer changeStatus;
    /**
     * 退票状态 字典（air_order_return_status 0-未退票，1-部分退票，2-已退票）
     * <p>
     * 枚举 {@link TODO air_order_return_status 对应的类}
     */
    private Integer returnStatus;
    /**
     * 调账状态 字典（air_order_adjust_status 0-未调账，1-部分调账，2-已调账）
     * <p>
     * 枚举 {@link TODO air_order_adjust_status 对应的类}
     */
    private Integer adjustStatus;
    /**
     * 归属部门id 见表（system_dept.id）
     */
    private Long deptId;
    /**
     * 团号
     */
    private String groupNo;
    /**
     * 业务类型 字典（basic_biz_scope_type 1-国内/2-国际）
     * <p>
     * 枚举 {@link TODO basic_biz_scope_type 对应的类}
     */
    private Integer scopeType;
    /**
     * 行程类型 字典（air_order_route_type 1-单程/2-往返/3-联程）
     * <p>
     * 枚举 {@link TODO air_order_route_type 对应的类}
     */
    private Integer routeType;
    /**
     * 票证类型 字典（basic_vendor_ticket_type 1-BSP/2-B2B/3-B2C/4-GP/5-外购/6-BOP）
     * <p>
     * 枚举 {@link TODO air_order_ticket_type 对应的类}
     */
    private Integer ticketType;
    /**
     * 订座编码
     */
    private String pnr;
    /**
     * 编码状态 HK-预订/XX-取消/RR-出票
     */
    private String pnrStatus;
    /**
     * 航司大编码
     */
    private String bigPnr;
    /**
     * 乘客人数
     */
    private Integer passengerNum;
    /**
     * 是否携带婴儿
     *
     * 枚举 {@link TODO infra_boolean_string 对应的类}
     */
    private Boolean haveBaby;
    /**
     * 是否携带儿童
     *
     * 枚举 {@link TODO infra_boolean_string 对应的类}
     */
    private Boolean haveChild;
    /**
     * 订单状态 字典（air_sale_order_status 0-已取消/10-新订单/20-待审核/25-已拒绝/30-待支付/40-待出票/45-出票中/50-已出票/55-出票失败
        air_change_order_status 0-已取消/10-新订单/20-待审核/25-已拒绝/30-待支付/40-待出票/45-出票中/50-已出票/55-出票失败
        air_return_order_status 0-已取消/10-新订单/20-待审核/25-已拒绝/30-待退款/40-待退票/45-退票中/50-已退票/55-退票失败
        air_adjust_order_status 0-已取消/10-新订单/20-待审核/25-已拒绝/30-待支付/40-待出票/45-出票中/50-已出票/55-出票失败）
     * <p>
     * 枚举 {@link TODO air_sale_order_status 对应的类}
     */
    private Integer status;
    /**
     * 客户id 见表（basic_customer.id）
     */
    private Long customerId;
    /**
     * 客户编号
     */
    private String customerNo;
    /**
     * 客户名称
     */
    private String customerName;
    /**
     * 客户协议类型 字典（air_customer_agreement_type 1-普通/2-GP/3-三方协议）
     */
    private Integer customerAgreementType;
    /**
     * 客户协议号
     */
    private String customerAgreementNo;
    /**
     * 业务员id 见表（system_users.id）
     */
    private Long salesmanUserId;
    /**
     * 业务员部门id 见表（system_dept.id）
     */
    private Long salesmanDeptId;
    /**
     * 预订员id 见表（system_users.id）
     */
    private Long bookUserId;
    /**
     * 预订部门id 见表（system_dept.id）
     */
    private Long bookDeptId;
    /**
     * 预订时间
     */
    private LocalDateTime bookTime;
    /**
     * 预订office
     */
    private String bookOffice;
    /**
     * 预订渠道id 见表（basic_channel.id）
     */
    private Long bookChannelId;
    /**
     * 调度员id 见表（system_users.id）
     */
    private Long dispatchUserId;
    /**
     * 调往部门id 见表（system_dept.id）
     */
    private Long dispatchDeptId;
    /**
     * 调度时间
     */
    private LocalDateTime dispatchTime;
    /**
     * 是否锁单
     * <p>
     * 枚举 {@link TODO infra_boolean_string 对应的类}
     */
    private Boolean locked;
    /**
     * 锁单员id 见表（system_users.id）
     */
    private Long lockUserId;
    /**
     * 锁单部门id 见表（system_dept.id）
     */
    private Long lockDeptId;
    /**
     * 锁单时间
     */
    private LocalDateTime lockTime;
    /**
     * 出（退）票时间
     */
    private LocalDateTime issueTime;
    /**
     * 出（退）票员id 见表（system_users.id）
     */
    private Long issueUserId;
    /**
     * 出（退）票部门id 见表（system_dept.id）
     */
    private Long issueDeptId;
    /**
     * 出（退）票渠道id 见表（basic_channel.id）
     */
    private Long issueChannelId;
    /**
     * 出票office
     */
    private String issueOffice;
    /**
     * 拒单时间
     */
    private LocalDateTime refuseTime;
    /**
     * 拒单员id 见表（system_users.id）
     */
    private Long refuseUserId;
    /**
     * 拒单部门id 见表（system_dept.id）
     */
    private Long refuseDeptId;
    /**
     * 拒单原因
     */
    private String refuseCause;
    /**
     * 审核用户id 见表（system_users.id）
     */
    private Long auditUserId;
    /**
     * 审核部门id 见表（system_dept.id）
     */
    private Long auditDeptId;
    /**
     * 审核时间
     */
    private LocalDateTime auditTime;
    /**
     * 审核状态 字典（air_order_audit_status 0-待审核/1-同意/2-拒绝）
     */
    private Integer auditStatus;
    /**
     * 审核备注
     */
    private String auditRemark;
    /**
     * 是否需要发票
     * <p>
     * 枚举 {@link TODO infra_boolean_string 对应的类}
     */
    private Boolean needInvoice;
    /**
     * 开票方式 字典（basic_make_invoice_type 1-统一发票/2-单项发票）
     */
    private Integer makeInvoiceType;
    /**
     * 发票类型 字典（basic_air_invoice_type）
     * <p>
     * 枚举 {@link TODO air_invoice_type 对应的类}
     */
    private Integer invoiceType;
    /**
     * 是否回收发票
     * <p>
     * 枚举 {@link TODO infra_boolean_string 对应的类}
     */
    private Boolean recycleInvoice;
    /**
     * 配送方式 字典（system_delivery_type）
     * <p>
     * 枚举 {@link TODO system_delivery_type 对应的类}
     */
    private Integer deliveryType;
    /**
     * 配送备注
     */
    private String deliveryRemark;
    /**
     * 配送费
     */
    private BigDecimal deliveryFee;
    /**
     * 配送联系人
     */
    private String deliveryContact;
    /**
     * 配送联系人电话
     */
    private String deliveryContactPhone;
    /**
     * 配送城市
     */
    private Long deliveryCityId;
    /**
     * 配送地址
     */
    private String deliveryAddress;
    /**
     * 配送邮箱
     */
    private String deliveryEmail;
    /**
     * 配送员id 见表（system_users.id）
     */
    private Long deliveryUserId;
    /**
     * 配送部门id 见表（system_dept.id）
     */
    private Long deliveryDeptId;
    /**
     * 配送时间
     */
    private LocalDateTime deliveryTime;
    /**
     * 取消规则id 见表（train_cancel_rule.id）
     */
    private Long cancelRuleId;
    /**
     * 取消操作员id 见表（system_users.id）
     */
    private Long cancelUserId;
    /**
     * 取消部门id 见表（system_dept.id）
     */
    private Long cancelDeptId;
    /**
     * 取消时间
     */
    private LocalDateTime cancelTime;
    /**
     * 取消原因
     */
    private String cancelCause;
    /**
     * 最后改签类型 字典（air_order_change_type 1-改期/2-升舱）
     * <p>
     * 枚举 {@link TODO air_order_change_type 对应的类}
     */
    private Integer finallyChangeType;
    /**
     * 最后改签员id 见表（system_users.id）
     */
    private Long finallyChangeUserId;
    /**
     * 最后改签部门id 见表（system_dept.id）
     */
    private Long finallyChangeDeptId;
    /**
     * 最后改签时间
     */
    private LocalDateTime finallyChangeTime;
    /**
     * 最后退票订单类型 字典（air_order_return_order_type 1-退票/2-废票）
     * <p>
     * 枚举 {@link TODO air_order_return_order_type 对应的类}
     */
    private Integer finallyReturnOrderType;
    /**
     * 最后退票类型 字典（air_order_return_type 1-自愿/2-非自愿）
     * <p>
     * 枚举 {@link TODO air_order_return_type 对应的类}
     */
    private Integer finallyReturnType;
    /**
     * 最后退票原因 字典（air_order_return_cause）
     * <p>
     * 枚举 {@link TODO air_order_return_cause 对应的类}
     */
    private Integer finallyReturnCause;
    /**
     * 最后退票员id 见表（system_users.id）
     */
    private Long finallyReturnUserId;
    /**
     * 最后退票部门id 见表（system_dept.id）
     */
    private Long finallyReturnDeptId;
    /**
     * 最后退票时间
     */
    private LocalDateTime finallyReturnTime;
    /**
     * 最后调账类型 字典（air_order_adjust_type 1-/2-/3-）
     * <p>
     * 枚举 {@link TODO air_order_adjust_type 对应的类}
     */
    private Integer finallyAdjustType;
    /**
     * 最后调账员id 见表（system_users.id）
     */
    private Long finallyAdjustUserId;
    /**
     * 最后调账部门id 见表（system_dept.id）
     */
    private Long finallyAdjustDeptId;
    /**
     * 最后调账时间
     */
    private LocalDateTime finallyAdjustTime;
    /**
     * 附加费
     */
    private BigDecimal saleAdditionalFee;
    /**
     * 服务费
     */
    private BigDecimal saleServiceFee;
    /**
     * 升舱费
     */
    private BigDecimal saleUpgradeFee;
    /**
     * 改期费
     */
    private BigDecimal saleChangeFee;
    /**
     * 退票费
     */
    private BigDecimal saleReturnFee;
    /**
     * 票面价
     */
    private BigDecimal saleTicketPrice;
    /**
     * 销售价
     */
    private BigDecimal salePrice;
    /**
     * 已用票面价
     */
    private BigDecimal saleUsedPrice;
    /**
     * 机建税
     */
    private BigDecimal saleAirportTax;
    /**
     * 已用机建税
     */
    private BigDecimal saleUsedAirportTax;
    /**
     * 燃油税
     */
    private BigDecimal saleOilTax;
    /**
     * 已用燃油税
     */
    private BigDecimal saleUsedOilTax;
    /**
     * 销售税
     */
    private BigDecimal saleTax;
    /**
     * 已用销售税
     */
    private BigDecimal saleUsedTax;
    /**
     * 代理费
     */
    private BigDecimal saleAgencyFee;
    /**
     * 后返费
     */
    private BigDecimal saleBackRebateFee;
    /**
     * 记奖价
     */
    private BigDecimal salePrizePrice;
    /**
     * 记奖税
     */
    private BigDecimal salePrizeTax;
    /**
     * 销售金额
     */
    private BigDecimal saleAmount;
    /**
     * 应收
     */
    private BigDecimal saleReceivable;
    /**
     * 实收
     */
    private BigDecimal saleReceipts;
    /**
     * 结算方式 字典（system_settle_type）
     */
    private Integer saleSettleType;
    /**
     * 支付状态 字典（system_pay_status）
     * <p>
     * 枚举 {@link TODO system_pay_status 对应的类}
     */
    private Integer salePayStatus;
    /**
     * 支付方式id 见表（basic_pay_type.id）
     */
    private Long salePayTypeId;
    /**
     * 支付科目id 见表（basic_pay_subject.id）
     */
    private Long salePaySubjectId;
    /**
     * 支付账号
     */
    private String salePayAccount;
    /**
     * 支付单号
     */
    private String salePayOrderNo;
    /**
     * 支付时间
     */
    private LocalDateTime salePayTime;
    /**
     * 是否在线支付
     * <p>
     * 枚举 {@link TODO infra_boolean_string 对应的类}
     */
    private Boolean salePayOnline;
    /**
     * 对账日期
     */
    private LocalDate saleReconcileDate;
    /**
     * 结算日期
     */
    private LocalDate saleSettleDate;
    /**
     * 采购商id 见表（basic_vendor.id）
     */
    private Long purchaseId;
    /**
     * 采购单号
     */
    private String purchaseOrderNo;
    /**
     * 采购附加费
     */
    private BigDecimal purchaseAdditionalFee;
    /**
     * 采购服务费
     */
    private BigDecimal purchaseServiceFee;
    /**
     * 采购升舱费
     */
    private BigDecimal purchaseUpgradeFee;
    /**
     * 采购改期费
     */
    private BigDecimal purchaseChangeFee;
    /**
     * 采购退票费
     */
    private BigDecimal purchaseReturnFee;
    /**
     * 采购票面价
     */
    private BigDecimal purchaseTicketPrice;
    /**
     * 采购价
     */
    private BigDecimal purchasePrice;
    /**
     * 已用采购票面价
     */
    private BigDecimal purchaseUsedPrice;
    /**
     * 采购机建税
     */
    private BigDecimal purchaseAirportTax;
    /**
     * 已用采购机建税
     */
    private BigDecimal purchaseUsedAirportTax;
    /**
     * 采购燃油税
     */
    private BigDecimal purchaseOilTax;
    /**
     * 已用采购燃油税
     */
    private BigDecimal purchaseUsedOilTax;
    /**
     * 采购税
     */
    private BigDecimal purchaseTax;
    /**
     * 已用采购税
     */
    private BigDecimal purchaseUsedTax;
    /**
     * 采购代理费
     */
    private BigDecimal purchaseAgencyFee;
    /**
     * 采购后返费
     */
    private BigDecimal purchaseBackRebateFee;
    /**
     * 采购记奖价
     */
    private BigDecimal purchasePrizePrice;
    /**
     * 采购记奖税
     */
    private BigDecimal purchasePrizeTax;
    /**
     * 采购金额
     */
    private BigDecimal purchaseAmount;
    /**
     * 采购应付
     */
    private BigDecimal purchasePayable;
    /**
     * 采购实付
     */
    private BigDecimal purchasePayment;
    /**
     * 采购支付状态 字典（system_pay_status）
     * <p>
     * 枚举 {@link TODO system_pay_status 对应的类}
     */
    private Integer purchasePayStatus;
    /**
     * 采购支付科目id 见表（basic_pay_subject.id）
     */
    private Long purchasePaySubjectId;
    /**
     * 采购支付方式id 见表（basic_pay_type.id）
     */
    private Long purchasePayTypeId;
    /**
     * 采购支付账号
     */
    private String purchasePayAccount;
    /**
     * 采购支付单号
     */
    private String purchasePayOrderNo;
    /**
     * 采购支付时间
     */
    private LocalDateTime purchasePayTime;
    /**
     * 采购是否在线支付
     * <p>
     * 枚举 {@link TODO infra_boolean_string 对应的类}
     */
    private Boolean purchasePayOnline;
    /**
     * 采购对账日期
     */
    private LocalDate purchaseReconcileDate;
    /**
     * 采购结算日期
     */
    private LocalDate purchaseSettleDate;
    /**
     * 联系人
     */
    private String contact;
    /**
     * 联系人证件类型 字典（system_card_type）
     * <p>
     * 枚举 {@link TODO system_card_type 对应的类}
     */
    private Integer contactCardType;
    /**
     * 联系人证件号
     */
    private String contactCardNo;
    /**
     * 联系人电话
     */
    private String contactPhone;
    /**
     * 联系人手机
     */
    private String contactMobile;
    /**
     * 联系人邮箱
     */
    private String contactEmail;
    /**
     * 备注
     */
    private String remark;
}
